package com.activity;


import com.container.Consulta;
import com.container.Data;
import com.container.Libro;
import com.container.MenuEncapsulado;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Activity que muestra la informacion asociada a un libro
 * Requiere: incluir en el Intent con clave "Libro" un objeto Libre
 * @author Javier
 */
public class LibroInfoActivity extends Activity {
	
	private Libro libro = null;
	
	private MenuEncapsulado menuEncapsulado;
	private Button btn;
	
	private int oldValue = 0;
	
	// Posicion del libro en ListaCompra
	private int posicionItem = -1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_libro_info);
		if(getIntent().getExtras().getCharSequence("from").equals("listaLibros")){
			libro = Data.listLibros.get(getIntent().getExtras().getInt("position"));
		}
		else if(getIntent().getExtras().getCharSequence("from").equals("listaCompra")){
			libro = Data.getListaCompra().get(getIntent().getExtras().getInt("position")).libro;
		}
		cargarContenidoLibro();
		
		
		btn =  (Button) findViewById(R.id.btn_agregar_lista);
		if(Data.getListaCompra().buscarLibro(libro.getId()) != -1){
			btn.setText(R.string.libro_editar_cantidad);
		}
		btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				//agregarLibro();
				if(Data.getUsuario()!= null){
					// Tomar el valor
					posicionItem = Data.getListaCompra().buscarLibro(libro.getId());
					if(posicionItem != -1){
						oldValue = Data.getListaCompra().getCantidad(posicionItem);
					}
					else{
						oldValue = 0;
					}
					// Ejecutar el NumberPickerActivity y esperar resultado
					Intent i = new Intent(getApplicationContext(), NumberPickerActivity.class);
					i.putExtra("valor_entero", oldValue);
					startActivityForResult(i, 1);
				}
				else{
					android.widget.Toast.makeText(getBaseContext(),
							"Debes identificarte para poder hacer pedidos.",android.widget.Toast.LENGTH_SHORT).show();
					new Handler().postDelayed(new Runnable() {
			            @Override
			            public void run() {
			            	Intent i = new Intent (getApplicationContext(), LoginActivity.class);
							startActivity(i);
			            }
			        }, 2000);
				}
			}
		});
	}
	/*
	private void agregarLibro(){
		if(Data.getUsuario() != null){
			android.widget.Toast.makeText(this.getBaseContext(),
					"Agregando libro a la Lista de la Compra...",android.widget.Toast.LENGTH_SHORT).show();
			//Mandar peticion para agregar el libro a pedidos
			Consulta con = new Consulta(getApplicationContext(),"agregar_pedido"); 
			con.queryAgregarPedido(Data.getUsuario().getEmail(), libro.getId());
		}
		else{
			android.widget.Toast.makeText(this.getBaseContext(),
					"Debes identificarte para poder hacer pedidos.",android.widget.Toast.LENGTH_SHORT).show();
			new Handler().postDelayed(new Runnable() {
	            @Override
	            public void run() {
	            	Intent i = new Intent (getApplicationContext(), LoginActivity.class);
					startActivity(i);
	            }
	        }, 2000);
		}
	}
	*/
	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);
		menuEncapsulado = new MenuEncapsulado(menu,this,BusqResultActivity.class);
		return true;
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		if(menuEncapsulado.onOptionsItemSelected(item)){
			return true;
		}
		else{
			// Por si es necesario comprobar otro menus
			return false;
		}
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data){
		super.onActivityResult(requestCode, resultCode, data);
		if(resultCode == RESULT_OK && requestCode == 1){
			int newValue = data.getIntExtra("resultado_entero", 0);
			//TODO Introducir aqui Comportamiento deseado
				// newValue: Nuevo valor de cantidad
				// oldValue: Valor que tenia antes
				// posicionItem: posicion en ListaCompra (== -1 SI NO ESTA EN  LISTA COMPRA)
			//Toast.makeText(this, " Cantidad: " + oldValue + " => " + newValue, Toast.LENGTH_LONG).show();
			
			//Mandar peticion para agregar el libro a pedidos
			if (newValue > 0 && newValue != oldValue){
				android.widget.Toast.makeText(this.getBaseContext(),
						"Agregando libros a la Lista de la Compra...",android.widget.Toast.LENGTH_SHORT).show();
				
				Consulta con = new Consulta(getApplicationContext(),"agregar_pedido"); 
				con.queryAgregarPedido("libro_info", Data.getUsuario().getEmail(), libro.getId(), newValue);
				
			}
			else if(oldValue > 0 && newValue == 0){
				android.widget.Toast.makeText(this.getBaseContext(),
						"Quitando libro de la Lista de la Compra...",android.widget.Toast.LENGTH_SHORT).show();
				Consulta con = new Consulta(getApplicationContext(),"borrar_pedido"); 
				con.queryBorrarPedido("libro_info", Data.getUsuario().getEmail(), libro.getId());
			}
		}
	}
	
	/**
	 * Carga el objeto Libro del Intent con clave "Libro"
	 * y rellena el contenido de los TextView
	 */
	private void cargarContenidoLibro(){
		TextView t;

		t=(TextView)findViewById(R.id.libro_nombre); 
	    t.setText(libro.getNombre()+"");
	    
	    t=(TextView)findViewById(R.id.libro_genero); 
	    t.setText(libro.getGenero()+"");
	    
	    t=(TextView)findViewById(R.id.libro_autor); 
	    t.setText(libro.getAutor()+"");
	    
	    t=(TextView)findViewById(R.id.libro_descripcion); 
	    t.setText(libro.getDescripcion()+"");
	    
	    t=(TextView)findViewById(R.id.libro_editorial); 
	    t.setText(libro.getEditorial()+"");
	    
	    t=(TextView)findViewById(R.id.libro_precio);
	    t.setText(String.valueOf(libro.getPrecio())+"");
	}

}
